Repository navigation
Conversation
Battery status for the Cloud Alpha 2 Wireless: level, charging state and voltage, and DeviceOffline when the headset is powered off while the base station stays plugged in. The base station enumerates as two USB devices; commands go to the control MCU (0x08be) on its vendor interface (interface 2, usage page 0xff13, usage 0xff00) as 64-byte [command][sub-command] reports. The connection state is queried with 52 01 (reply 53 01 <connected>) and the battery with 50 02 (reply 51 02 <level> <charge state> <temp> <mV> ...). NGENUITY polls the same interface continuously, so the driver skips ACKs, notifications and replies to other requests until its own reply arrives. Tests use replies captured from the hardware and cover connected, charging, powered off, a rejected request and a missing reply. Verified on Windows on battery, charging and with the headset off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sidetone, the game/chat balance and the active equalizer preset live in one audio settings block on the base station: 60 02 reads it (reply 61 02), 60 01 writes the whole block back. Setters read the block first and change only their own bytes, so the other settings are kept. - sidetone: on/off at block byte 4, level 0-20 at byte 5 (0 turns it off and keeps the stored level); also reported as sidetone status - chat-mix: byte 8, 0x7b all game .. 0x80 balanced .. 0x85 all chat - equalizer preset: byte 11, presets 1-3 stored on the base station Verified on Windows: sidetone off/on and level read back from the device, chat-mix read, and each preset written and read back with the other bytes unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dasio
force-pushed
the
add-hyperx-cloud-alpha-2-wireless
branch
from
October 6, 2026 21:46
27eb4bb to
92013c7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes made
Adds the HyperX Cloud Alpha 2 Wireless (
03f0:08be) with:DeviceOfflinewhen the headset is powered off while the base station stays plugged inThis is a new driver rather than a new product ID for
HyperXCloudAlphaWireless(0x098d). The Alpha 2's base station uses a different command layout from the original's21 BB xxreports, on a different USB device.Protocol. The base station enumerates as two USB devices:
0x0abe(audio) and0x08be(control MCU). Commands go to the MCU's vendor interface (interface 2, usage page0xff13, usage0xff00) as 64-byte reports[command][sub-command][payload…], and replies use command + 1:52 01connection state53 01 <connected>50 02battery51 02 <level %> <charge state> <temp °C, i16 LE> <mV, u16 LE> …60 02audio settings61 02 <2 bytes> <12-byte settings block>60 01 <settings block>In the settings block, byte 4 is sidetone on/off, byte 5 the sidetone level (0–20), byte 8 the game/chat balance (
0x7ball game …0x80balanced …0x85all chat) and byte 11 the active equalizer preset (1–3). The base station only takes the whole block, so the setters read it first and change only their own bytes.The MCU also ACKs every command (
FF 01 …, with the command echoed at offset 14), rejects withFF 02 …, and pushes notifications (FB xx). For example,FB 0A 01/00is sent when the headset links or unlinks. NGENUITY polls the same interface continuously, so the driver skips ACKs, notifications and replies to other software's requests until its own reply arrives.Note for users. Whenever one of these settings changes in NGENUITY's UI, NGENUITY writes the whole settings block from its own cached state. So while it runs, it can undo changes made with HeadsetControl.
Not included. Lighting is streamed by NGENUITY as continuous frames rather than set with a command. Mic effects and spatial audio are processed on the PC. Custom equalizer bands are a separate command whose band layout I could not fully verify, so I left it out rather than risk overwriting the stored presets.
Testing
tests/test_hyperx_cloud_alpha_2_wireless.cpp) use replies and writes captured from the hardware. They cover battery (connected, charging, powered off), sidetone get/set (including that only the sidetone bytes change), chat-mix, equalizer presets, rejected requests and a missing reply. The full suite passes.BATTERY_AVAILABLE, 91 %, 4185 mV), charging (BATTERY_CHARGING, 92 %, 4331 mV) and powered off (BATTERY_UNAVAILABLE, offline)AI disclosure
This PR was written entirely by an AI assistant, Claude Opus 5.5 (Claude Code): the driver, the tests and this description. My role was to own the hardware, run the tests on it and review the result.
Every behaviour the driver claims was checked on a real Cloud Alpha 2 Wireless, as listed under Testing above.
Checklist